const jwt = require('jsonwebtoken')

function sign(options, time) {
    return jwt.sign(options, '晓慧', {
        expiresIn: time || '24h', // 鉴权有效期
    })
}

// function sign(options) {
//     return jwt.sign(options, '晓慧', {
//         expiresIn: '24h', // 鉴权有效期
//     })
// }

function verify() {
    return (async (ctx, next) => {
        // 从请求体里读取前端发送的token
        const token = ctx.header.authorization
        if (token) {
            // 校验是否合法
            try {
                let res = jwt.verify(token, '晓慧')
                console.log(res);
                //res
                //{
                //    id: '1',
                //    username: 'AA晓慧',
                //    password: '1314',
                //    create_time: '2023-08-10T08:00:00.000Z',
                //    iat: 1692532800,
                //    exp: 1692532800
                //}
                // res.id就是判断解密的数据是否是个空对象，空对象代表token失效
                if (res.id) {
                    // 合法
                    await next()
                }
            } catch (err) {
                ctx.status = 401
                ctx.body = {
                    code: '0',
                    msg: '登录失效，请重新登录',
                }
            }

        } else {
            ctx.status = 401
            ctx.body = {
                code: '0',
                msg: '请重新登录',
            }
        }
    })
}
function refreshVerify(token) {
    try {
        const decoded = jwt.verify(token, '晓慧')
        if (decoded.id) {
            // ctx.UseId = decoded.id;
            // 合法

            return decoded;
        }
        return false;
    } catch (err) {
        return false;
    }
}

module.exports = {
    sign,
    verify,
    refreshVerify,
}